package Traductor.lexico;

import java.io.BufferedReader;
import java.util.ArrayList;

import Traductor.lexico.utils.Token;

/**
 * Interfaz básica del AnalizadorLexico, de la cual hereda el AnalizadorLexicoEstados.
 * Al tener una interfaz padre de la que heredar se le añade flexibilidad al analizador léxico. 
 *
 */
public interface AnalizadorLexico {
	/**
	 * Inicializa el scanner con la cadena a analizar
	 * @param input Cadena a analizar
	 * @throws Exception si da error
	 */
	public void inicializa(BufferedReader entrada) throws Exception;
	
	/*
	/**
	 * Devuelve verdadero si el tipo del siguiente token es el indicado en el parametro
	 * @param tipo a comprobar
	 * @return verdadero si el tipo del siguiente token es el indicado en el parametro
	 * @throws Exception si el token no es reconocido
	 */	
	//public abstract boolean consultaTipo(TipoToken tipo) throws Exception;
	
	/**
	 * Analiza la cadena input y devuelve un Arraylist de tokens
	 * @return Arraylist de tokens
	 * @throws Exception si da algún error
	 */

	public abstract	ArrayList<Token> analizaLexico() throws Exception;	

}